using System;
using System.Windows.Forms;
using App.Controlador;

namespace App.Seguridad.Vista.Forms
{
    public partial class LoginForm : Form
    {
        private bool GetCredencialesOpened;

        public LoginForm()
        {
            InitializeComponent();
        }

        public ControladoraUsuarios ControladoraUsuarios { get; set; }

        public string Mensaje
        {
            get { return label3.Text; }
            set { label3.Text = value; }
        }

        private void LoginForm_Load(object sender, EventArgs e)
        {
            MaximizeBox = false;
            MinimizeBox = false;
/*
#if DEBUG
            txtUsuario.Text = "admin";
            txtClave.Text = "asd";
#endif
  */      }

        public void GetCredenciales(string defaultUsuario, string defaultPassword, out string Username,
                                    out string Password)
        {
            txtUsuario.Text = defaultUsuario;
            txtClave.Text = defaultPassword;
            GetCredenciales(out Username, out Password);
        }

        public void GetCredenciales(out string Username, out string Password)
        {
            GetCredencialesOpened = true;
            ShowDialog();
            Username = txtUsuario.Text;
            Password = txtClave.Text;
        }


        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            login();
        }

        private void toolStripButton2_Click(object sender, EventArgs e)
        {
            if (GetCredencialesOpened)
            {
                DialogResult = DialogResult.Cancel;
                Hide();
                return;
            }
            Application.Exit();
        }

        private void LoginForm_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                login();
            }
        }

        private void login()
        {
            if (GetCredencialesOpened)
            {
                DialogResult = DialogResult.OK;
                Hide();
                return;
            }

            if (!ControladoraUsuarios.AutenticarUsuario(txtUsuario.Text, txtClave.Text))
            {
                MessageBox.Show(
                    "El nombre de usuario o la clave son incorrectos",
                    "Inicio de sesion",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Warning
                    );
            }
            else
            {
                // registro el usuario actual para toda la session
                ModuloSeguridad.Instance.SessionActual = new SessionActual
                                                             {
                                                                 UsuarioActual =
                                                                     ControladoraUsuarios.Get(txtUsuario.Text)
                                                             };



                DialogResult = DialogResult.OK;
                Hide();
            }
        }

        private void datosReparacion1_Load(object sender, EventArgs e)
        {
        }
    }
}